home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / probots.arc / M1_GO.PR < prev    next >
Text File  |  1991-04-28  |  2KB  |  82 lines

  1.   PROCEDURE M1_GO;
  2.     { M1-GO is based on a Japanese 60's TV drama "Ultra-Q"
  3.       Original C-Robot by Hortense Endoh }
  4.  
  5.   VAR
  6.     deg, dego, dir, doo, dmg : Integer;
  7.     Range, ranrnd, incr, ro, spd : Integer;
  8.  
  9.     PROCEDURE Go_hell;
  10.     BEGIN
  11.       WHILE (loc_y > 10) DO
  12.         IF (loc_y < 60)
  13.         THEN drive(270, 10)
  14.         ELSE drive(270, 100);
  15.     END; {Go_Hell}
  16.  
  17.     PROCEDURE shoot;
  18.     BEGIN
  19.       Range := scan(deg, 10);
  20.       drive(dir, spd);
  21.       IF (Range <> 0) THEN BEGIN
  22.         ro := Range-(ro-Range) DIV 2;
  23.         doo := deg-(doo-deg) DIV 2;
  24.         IF (ro > 40) THEN cannon(doo, ro);
  25.         dego := deg;
  26.       END
  27.       ELSE BEGIN
  28.         IF (dego-deg > 0) THEN BEGIN
  29.           incr := 20;
  30.           dego := deg+30;
  31.         END
  32.         ELSE BEGIN
  33.           IF (dego-deg < 0) THEN BEGIN
  34.             incr := -20;
  35.             dego := deg-30;
  36.           END;
  37.         END;
  38.         IF (deg > 180) THEN BEGIN
  39.           deg := 0;
  40.           dego := 30;
  41.         END
  42.         ELSE BEGIN
  43.           IF (deg < 0) THEN BEGIN
  44.             deg := 180;
  45.             dego := 150;
  46.           END
  47.           ELSE deg := deg+incr;
  48.         END;
  49.       END;
  50.     END; {Shoot}
  51.  
  52.  
  53.   BEGIN {M1_GO Main}
  54.     deg := 0; dego := 20; incr := 20; spd := 100;
  55.     Go_hell;
  56.  
  57.     REPEAT
  58.       dir := 0; dmg := damage;
  59.       WHILE (loc_x < 800) DO BEGIN
  60.         shoot;
  61.         IF (dmg <> damage) THEN BEGIN
  62.           dir := 180;
  63.           WHILE (loc_x > 200) DO shoot;
  64.           dir := 0; dmg := damage;
  65.         END;
  66.       END;
  67.  
  68.       dir := 180; dmg := damage;
  69.       WHILE (loc_x > 200) DO BEGIN
  70.         shoot;
  71.         IF (dmg <> damage) THEN BEGIN
  72.           dir := 0;
  73.           WHILE (loc_x < 800) DO shoot;
  74.           dir := 180; dmg := damage;
  75.         END;
  76.       END;
  77.  
  78.     UNTIL Dead OR Winner;
  79.  
  80.   END; { end of M1_GO Main }
  81.  
  82.